//
//  main.c
//  结构体定义的多种方式
//
//  Created by ws on 2017/7/25.
//  Copyright © 2017年 王松. All rights reserved.
//

#include <stdio.h>

/**
 第一种方式
 1.先定义结构体类型
 2.再定义结构体变量
 */
void test(){
    struct Person{
        int age;
        double height;
    };
    struct Person p1;
}
/**
 定义结构体类型的同时定义结构体变量
 */
void test1(){
    struct Person{
        int age;
        double height;
    }p1,p2 = {20,1.75};//此时只有p2初始化了,p1没有初始化
    p1 = (struct Person){10,1.2};
    printf("age = %d,height = %.2lf\n",p1.age,p1.height);
    printf("age = %d,height = %.2lf\n",p2.age,p2.height);
    //  结构体类型定义是不可以重名的
    //    struct Person{
    //        int age;
    //        double height;
    //    } p3,p4 = {20,1.75};
}
/**
 定义匿名的结构体类型的同时定义结构体变量
 1、不支持整体赋值
 2、结构体类型不能重复使用
 */
int main(int argc, const char * argv[]) {
    struct{
        int age;
        char sex;
    }p1,p2 = {20,'M'};//此时只有p2初始化了,p1没有初始化
    p1.age = 10;
    p1.sex = 'W';
    printf("age = %d,sex = %c\n",p1.age,p1.sex);
    printf("age = %d,sex = %c\n",p2.age,p2.sex);
    p1 = p2;
    printf("age = %d,sex = %c\n",p1.age,p1.sex);
    //   1、不支持整体赋值
    //   2、结构体类型不能重复使用
    //   p1 = (struct){10,'M'};
    struct{
        int age;
        char sex;
    } p3,p4 = {20,'M'};
    return 0;
}
